%{
#include <cstdlib>
#include "core/json/json.h"
#include "json.tab.h"
%}

%%
null: return NIL;
true: return TRUE;
false: return FALSE;
[\+|\-]?[0-9]+	yylval.d=std::atol(yytext); return INTEGER;
(\'[^\']*\'|\"[^\"]*\") yylval.s=new std::string(&yytext[1],yyleng-2); return STRING;
[\n\r\t]	;
[\:\{\}\,\[\]] return yytext[0];
.	{
	fprintf("Illegal JSON character \"%s\",yytext);
	exit(EXIT_FAILURE);
	}

%%